﻿namespace KinonekoSoftware.CodariaDB.Runtimes.Abstractions
{
    /// <summary>
    /// <see cref="IValuePool{T}"/> 类型表示特定类型值字典的LiteDB实现。
    /// </summary>
    /// <typeparam name="T">值的类型，仅推荐的类型为int、bool、string、float、double。</typeparam>
    public interface IValuePool<T>
    {
        /// <summary>
        /// 判断某个值是否存在。
        /// </summary>
        /// <param name="key">要判断的值的Key。</param>
        /// <returns>存在则返回true，否则返回false</returns>
        bool Has(string key);
        
        /// <summary>
        /// 移除一个值
        /// </summary>
        /// <param name="key">要移除的值的Key。</param>
        /// <returns>返回移除的值（做最后的处理）</returns>
        T Remove(string key);
        
        /// <summary>
        /// 获取或修改某个值
        /// </summary>
        /// <param name="key">要获取或修改的值的Key。</param>
        T this[string key] { get; set; }
    }
}